home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 8434 / 8434.xpi / install.js < prev    next >
Text File  |  2010-02-08  |  6KB  |  162 lines

  1. // This code is heavily inspired by Chris Pederick (useragentswitcher) install.js
  2. // Contributors: Philip Chee, deathburger
  3. //
  4. // Philip Chee: Added installation of prefs, components, and locales.
  5. // deathburger: Refactored to move all changable items to the top of the file.
  6. // Philip Chee: This version is for NON-jar, flat directory structured XPIs.
  7.  
  8. // Editable Items Begin
  9. var displayName         = "GoogleRedesigned"; // The name displayed to the user (don't include the version)
  10. var version             = "0.4.5";
  11. var name                = "googleredesigned"; // The directory name/chrome name to be used)
  12.  
  13. // The following three sets of variables tell this installer script how your
  14. // extension directory structurdomains.hasMoreElementse looks.
  15. // If your jar file contains content/packagename use the second packageDir
  16. // variable. Same rule applies for skinDir and localeDir. I set them up
  17. // independent of each other just in case an extension layout is wacky.
  18. var packageDir           = "/"
  19. //var packageDir           = "/" + name + "/"
  20. var skinDir           = ""
  21. //var skinDir           = "/" + name + "/"
  22. var localeDir           = "/"
  23. //var localeDir           = "/" + name + "/"
  24.  
  25. var installDirs         = new Array( "chrome");
  26. var locales             = new Array("en-US","fr","ru","es-ES","it","pt-BR","nl","bs-BA","cs","tr-TR");
  27. var skins               = new Array( "" ); // "modern"
  28. var prefs               = new Array( "googleredesigned.js" ); // "exch.js"
  29. var components          = new Array( "GoogleRedesignedStartup.js" );
  30. var searchPlugins       = new Array(  );
  31.  
  32. // Mozilla Suite/Seamonkey stores all pref files in a single directory
  33. // under the application directory.  If the name of the preference file(s)
  34. // is/are not unique enough, you may override other extension preferences.
  35. // set this to true if you need to prevent this.
  36. var disambiguatePrefs   = true;
  37.  
  38. // Editable Items End
  39.  
  40. var jarName             = name;
  41. var contentFolder       = "content" + packageDir
  42. var error               = null;
  43.  
  44. var folder              = getFolder("Profile", "chrome");
  45. var prefFolder          = getFolder(getFolder("Program", "defaults"), "pref");
  46. var compFolder          = getFolder("Components");
  47. var searchFolder        = getFolder("Plugins");
  48.  
  49. var existsInApplication = File.exists(getFolder(getFolder("chrome"), jarName));
  50. var existsInProfile     = File.exists(getFolder(folder, jarName));
  51.  
  52. var contentFlag         = CONTENT | PROFILE_CHROME;
  53. var localeFlag          = LOCALE | PROFILE_CHROME;
  54. var skinFlag            = SKIN | PROFILE_CHROME;
  55.  
  56. // If the extension exists in the application folder or it doesn't exist
  57. // in the profile folder and the user doesn't want it installed to the
  58. // profile folder
  59. if(existsInApplication ||
  60.     (!existsInProfile &&
  61.       !confirm( "Do you want to install the " + displayName +
  62.                 " extension into your profile folder?\n" +
  63.                 "(Cancel will install into the application folder)")))
  64. {
  65.     contentFlag = CONTENT | DELAYED_CHROME;
  66.     folder      = getFolder("Chrome");
  67.     localeFlag  = LOCALE | DELAYED_CHROME;
  68.     skinFlag    = SKIN | DELAYED_CHROME;
  69. }
  70.  
  71. initInstall(displayName, name, version);
  72. setPackageFolder(folder);
  73.  
  74. for (var i = 0; i < installDirs.length; i++) {
  75.     error = addDirectory ( name , version , installDirs[i] , getFolder(folder , name), null );
  76.     if(error != SUCCESS) {
  77.         displayError(error);
  78.         cancelInstall(error);
  79.     }
  80. }
  81.  
  82. // If adding the directory succeeded
  83. if(error == SUCCESS)
  84. {
  85.     folder = getFolder(folder, name);
  86.     registerChrome(contentFlag, getFolder(folder, contentFolder));
  87.  
  88.     for (var i = 0; i < locales.length; i++) {
  89.         registerChrome(localeFlag, getFolder(folder, "locale/" + locales[i] + localeDir));
  90.     }
  91.  
  92.     for (var i = 0; i < skins.length; i++) {
  93.         registerChrome(skinFlag, getFolder(folder, "skin/" + skins[i] + skinDir));
  94.     }
  95.  
  96.     for (var i = 0; i < prefs.length; i++) {
  97.         if (!disambiguatePrefs) {
  98.             addFile(name + " Defaults", version, "defaults/preferences/" + prefs[i],
  99.                 prefFolder, prefs[i], true);
  100.         } else {
  101.             addFile(name + " Defaults", version, "defaults/preferences/" + prefs[i],
  102.                 prefFolder, name + "-" + prefs[i], true);
  103.         }
  104.     }
  105.  
  106.     for (var i = 0; i < components.length; i++) {
  107.         addFile(name + " Components", version, "components/" + components[i],
  108.             compFolder, components[i], true);
  109.     }
  110.  
  111.     for (var i = 0; i < searchPlugins.length; i++) {
  112.         addFile(name + " searchPlugins", version, "searchplugins/" + searchPlugins[i],
  113.             searchFolder, searchPlugins[i], true);
  114.     }
  115.  
  116.     error = performInstall();
  117.  
  118.     // If the install failed
  119.     if(error != SUCCESS && error != REBOOT_NEEDED)
  120.     {
  121.         displayError(error);
  122.         cancelInstall(error);
  123.     }
  124.     else
  125.     {
  126.         alert("The installation of the " + displayName + " extension succeeded.");
  127.     }
  128. }
  129. else
  130. {
  131.     displayError(error);
  132.     cancelInstall(error);
  133. }
  134.  
  135. // Displays the error message to the user
  136. function displayError(error)
  137. {
  138.     // If the error code was -215
  139.     if(error == READ_ONLY)
  140.     {
  141.         alert("The installation of " + displayName +
  142.             " failed.\nOne of the files being overwritten is read-only.");
  143.     }
  144.     // If the error code was -235
  145.     else if(error == INSUFFICIENT_DISK_SPACE)
  146.     {
  147.         alert("The installation of " + displayName +
  148.             " failed.\nThere is insufficient disk space.");
  149.     }
  150.     // If the error code was -239
  151.     else if(error == CHROME_REGISTRY_ERROR)
  152.     {
  153.         alert("The installation of " + displayName +
  154.             " failed.\nChrome registration failed.");
  155.     }
  156.     else
  157.     {
  158.         alert("The installation of " + displayName +
  159.             " failed.\nThe error code is: " + error);
  160.     }
  161. }
  162.